A graph processing system may perform a graph algorithm more rapidly, compared to a central processing unit (CPU), by using a graphics processing unit (GPU) having a higher throughput, or processing rate, than the CPU. In general, the graph processing system using such a GPU may use a device memory provided in the GPU to process a storable size of graph data or graphs.
In a case that the device memory processes a storable size of graph data, the processing may be performed more rapidly in comparison to the CPU due to a high throughput of the GPU. However, in a case that the device memory processes graph data of a size greater than the device memory, the graph data may be divided into a portion that may be stored in the device memory and a portion that may be stored in a main memory. Here, the GPU may process only the portion of the graph data stored in the device memory and the CPU may process the remaining portion of the graph data stored in the main memory, and thus graph-processing performance may decrease by an increase in a size of graph data.
In addition, in a case that the number of GPUs increases and the number of partitions to be obtained through division increases, phase data of graph data may be, more increasingly, duplicated among the GPUs and graph-processing performance may decrease accordingly. That is, scalability based on the increase in the number of GPUs may not be desirable.
Further, the graph processing system may process graph data only after storing entire graph data in the main memory. Thus, a size of graph data that is processible by the graph processing system may be determined based on a size of the main memory, and thus graph data of a size greater than the main memory may not be processed.
As described above, the importance of a method of processing large graph data is recognized. However, a more effective method of processing large graph data has yet to be developed.